meta 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile.lock CHANGED
@@ -1,7 +1,18 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- meta (0.0.1)
4
+ meta (0.0.3)
5
+ colorize (~> 0.6.0)
6
+ haml (~> 4.0.4)
7
+ highline (~> 1.6.20)
8
+ rack (~> 1.5.2)
9
+ redcarpet (~> 3.0.0)
10
+ sequel (~> 4.5.0)
11
+ sqlite3 (~> 1.3.8)
12
+ thin (~> 1.6.1)
13
+ thor (~> 0.18.1)
14
+ tilt (~> 2.0.0)
15
+ url2thumb
5
16
 
6
17
  GEM
7
18
  remote: https://rubygems.org/
@@ -23,6 +34,7 @@ GEM
23
34
  rack (>= 1.0.0)
24
35
  thor (0.18.1)
25
36
  tilt (2.0.0)
37
+ url2thumb (0.0.1)
26
38
 
27
39
  PLATFORMS
28
40
  ruby
data/README.md CHANGED
@@ -8,7 +8,8 @@ be used to test/preview static pages in your development environment without
8
8
  having to deploy into production.
9
9
 
10
10
  ## requirements
11
- * ruby 1.9.2+
11
+ * linux (tested on ubuntu 12.04.x lts)
12
+ * ruby (1.9.2+)
12
13
  * bundler
13
14
  * colorize
14
15
  * haml
@@ -20,6 +21,8 @@ having to deploy into production.
20
21
  * thin
21
22
  * thor
22
23
  * tilt
24
+ * url2thumb
25
+ * yaml
23
26
 
24
27
  ## installation
25
28
  ```gem install meta```
data/docs/backlog CHANGED
@@ -1,12 +1,16 @@
1
1
  open:
2
- + migrate schema without losing any data
3
- + multiple templates
4
- + syntax highlighting for code
5
- + title modification
2
+ + custom templates
6
3
  + referencing a link and commenting on that
4
+ + post tags
5
+ + rss/atom feed
6
+ + config file based configuration
7
+ + pull content from other sinks like facebook, flickr, twitter, wechat, etc
8
+ + links
7
9
 
8
10
  iced:
11
+ + syntax highlighting for code
9
12
  + support uppercase file extensions
13
+ + migrate schema without losing any data
10
14
  + detect and compile changes only
11
15
  + tie static files with source repository
12
16
  + clone template files
@@ -24,3 +28,6 @@ closed:
24
28
  + single entry template
25
29
  + add config.ru file for testing, this should be added during compilation
26
30
  + google analytics
31
+ + title modification
32
+ + statistics
33
+
data/docs/design CHANGED
@@ -9,15 +9,12 @@ design:
9
9
  directory layout example:
10
10
 
11
11
  + src
12
- +-- site.db
12
+ +-- site.sqlite3
13
13
  +-- article1.md
14
14
  +-- article2.md
15
15
  +-- layout.haml
16
16
  +-- navbar.haml
17
17
  +-- footer.haml
18
- +-- css
19
- +-- images
20
- +-- js
21
18
 
22
19
  * create a flat hierarchy of html files
23
20
  * js, css, images are found in folders
@@ -37,3 +34,72 @@ articles( id, creation, modification, title, layout, src )
37
34
  b. organize by latest at the top
38
35
  4. create individual pages
39
36
 
37
+ in the initial version, layout.haml, navbar.haml were fixed templates. this
38
+ assumes that each site will have these files. there can actually be multiple
39
+ layouts for a site so there needs to be a mapping of layouts to content (md
40
+ files). also there should be enough flexibility to not have navbars, or
41
+ multiple navbars, etc.
42
+
43
+ there will be 4 main types of haml templates: page layouts, navbars, footers,
44
+ and contents.
45
+
46
+ layout files are the main templates that house the structure of the site,
47
+ from enclosing html tags to the head which includes all of the stylesheets
48
+ and javascript assets. in order to identify layout files, the filename will
49
+ be searched for the substring "layout.haml".
50
+
51
+ e.g.
52
+
53
+ layout.haml
54
+ main.layout.haml
55
+ sub-layout.haml
56
+ layout-sub.haml (not valid)
57
+
58
+ each of these will be listed in the layouts table
59
+
60
+ navbars are embedded in layout templates and need to have the "navbar.haml"
61
+ identifier in the filename.
62
+
63
+ footers are also embedded in layout templates and need to have the
64
+ "footer.haml" identifier in the filename.
65
+
66
+ content templates are also embedded in layout templates and need to have the
67
+ "content.haml" identifier in the filename.
68
+
69
+ if there's only one set of navbars, footer, and layout, then the user
70
+ won't be prompted.
71
+
72
+ the above is for a more advanced version, let's keep things simple, you
73
+ must have layout.haml, index.haml, and page.haml.
74
+
75
+ 1. layout.haml defines the overall site from html tags to body and head.
76
+ meta requires this file be present in order to compile.
77
+
78
+ 2. index.haml includes the content for the main page of a site, typically
79
+ it's a summary of all posts.
80
+
81
+ 3. page.haml includes the content for a single post.
82
+
83
+ let's initially support the case where layout.haml, index.haml, and page.haml
84
+ are required.
85
+
86
+ custom templates:
87
+
88
+ assume a site has pages for about, projects, etc. there should be a generic
89
+ way to associate a layout and content layer, and the process should be very
90
+ simple.
91
+
92
+ assume there are these types of posts:
93
+
94
+ 1. blog: mostly original text from an author, can contain pictures, tables,
95
+ etc.
96
+ 2. picture: picture only post, no text. will include pictures from other
97
+ sources only, will not store many pictures on my site.
98
+ 3. recommended link: user submit's url, title, summary, maybe a picture
99
+ included.
100
+
101
+
102
+ markdown compendium:
103
+
104
+ [![alt text](image link)](web link)
105
+
data/lib/meta.rb CHANGED
@@ -4,11 +4,13 @@ require "colorize"
4
4
  require "digest/md5"
5
5
  require "haml"
6
6
  require "highline/import"
7
+ require "open3"
7
8
  require "redcarpet"
8
9
  require "sequel"
9
10
  require "sqlite3"
10
11
  require "thor"
11
12
  require "tilt"
13
+ require "yaml"
12
14
 
13
15
  require File.join( File.dirname(__FILE__), "meta", "catalog" )
14
16
  require File.join( File.dirname(__FILE__), "meta", "cli" )
@@ -24,17 +26,21 @@ end
24
26
  module Meta
25
27
 
26
28
  BASEDIR = ".".freeze
29
+ CONFIGFILE = "~/.meta".freeze
27
30
  DATASTORE = File.join( Dir.pwd, "site.sqlite3" )
28
31
  EXCLUDES = [ "layout.haml", "navbar.haml", "footer.haml" ]
32
+ FEXISTS = "File already exists".freeze
29
33
  HAML = ["*.haml"]
30
34
  HAMLEXT = ".haml".freeze
31
35
  HTML = ["*.html"]
32
36
  HTMLEXT = ".html".freeze
33
37
  INDEX = "index.html".freeze
34
38
  MARKDOWN = ["*.md", "*.markdown", "*.mkd"]
35
- MARKDOWNEXT = ".md".freeze
39
+ MDEXT = ".md".freeze
40
+ PNGEXT = ".png".freeze
36
41
  SEED = 1234562
37
42
  SLASH = "/".freeze
43
+ SPACE = " ".freeze
38
44
 
39
45
  end
40
46
 
data/lib/meta/catalog.rb CHANGED
@@ -10,6 +10,17 @@ module Meta
10
10
 
11
11
  end
12
12
 
13
+ def get_statistics
14
+
15
+ stats = Hash.new
16
+
17
+ stats[:posts] = self.db[:contents].count
18
+ stats[:pictures] = self.db[:contents].where(:picture => true).count
19
+
20
+ return stats
21
+
22
+ end
23
+
13
24
  def content_exists?(file)
14
25
 
15
26
  rs = self.db[:contents].where(:path => file).all
@@ -75,7 +86,7 @@ module Meta
75
86
  :title => title,
76
87
  :hash => hash,
77
88
  :path => file,
78
- :created_at => File.ctime(file) )
89
+ :created_at => Time.now )
79
90
 
80
91
  end
81
92
 
data/lib/meta/cli.rb CHANGED
@@ -3,6 +3,8 @@ module Meta
3
3
  class CLI < Thor
4
4
  include Thor::Actions
5
5
 
6
+ config = YAML.load_file(CONFIGFILE) if File.exists?(CONFIGFILE)
7
+
6
8
  desc "compile", "compile meta files"
7
9
  method_option :output, :aliases => "-o", :type => :string,
8
10
  :required => false, :desc => "static file output directory"
@@ -21,7 +23,7 @@ module Meta
21
23
  p = Meta::Page.new(dest)
22
24
 
23
25
  p.generate(options[:force])
24
- p.generate_main(options[:force])
26
+ p.generate_index(options[:force])
25
27
 
26
28
  end
27
29
 
@@ -96,11 +98,48 @@ module Meta
96
98
 
97
99
  end
98
100
 
101
+ desc "capture", "capture thumbnail of url"
102
+ method_option :output, :aliases => "-o", :type => :string,
103
+ :required => false, :desc => "output directory"
104
+ def capture(url)
105
+
106
+ if options[:output].nil?
107
+ dest = BASEDIR
108
+ else
109
+ dest = options[:output]
110
+ end
111
+
112
+ images = dest + SLASH + "images"
113
+
114
+ images = dest unless Dir.exists?(images)
115
+
116
+ cmd = "xvfb-run url2thumb capture #{url} -o #{images}"
117
+
118
+ stdin, stdout, stderr = Open3.popen3(cmd)
119
+
120
+ abort( stderr.read.chomp.red ) if stdout.nil?
121
+
122
+ out = stdout.read.chomp
123
+
124
+ unless out.include?(FEXISTS)
125
+
126
+ created = out.split(SPACE).first
127
+
128
+ link = "[![referral](images/#{File.basename(created)})](#{url})"
129
+
130
+ Meta::Filelib.create_file( link, created, MDEXT, dest, false )
131
+
132
+ end
133
+
134
+ end
135
+
99
136
  desc "test", "testing"
100
137
  def test
101
138
 
102
- p = Meta::Page.new
103
- p.generate_main
139
+ c = Meta::Catalog.new
140
+ stats = c.get_statistics
141
+ puts stats[:posts]
142
+ puts stats[:pictures]
104
143
 
105
144
  end
106
145
 
data/lib/meta/filelib.rb CHANGED
@@ -17,9 +17,9 @@ module Meta
17
17
 
18
18
  end
19
19
 
20
- def self.create_file( text, filename, dest, overwrite=false )
20
+ def self.create_file( text, filename, ext, dest, overwrite=false )
21
21
 
22
- filename = File.basename( filename, File.extname(filename) ) + HTMLEXT
22
+ filename = File.basename( filename, File.extname(filename) ) + ext
23
23
  filename = dest + SLASH + filename
24
24
 
25
25
  reply = false
data/lib/meta/page.rb CHANGED
@@ -2,88 +2,39 @@ module Meta
2
2
 
3
3
  class Page
4
4
 
5
- attr_reader :layout, :navbar, :catalog
5
+ attr_reader :catalog
6
6
 
7
7
  def initialize(dest=BASEDIR)
8
8
 
9
- @dest = dest
9
+ @dest = dest
10
10
 
11
- @catalog = Meta::Catalog.new
11
+ @catalog = Meta::Catalog.new
12
12
 
13
- @layout = Tilt.new("layout.haml")
14
- @navbar = Tilt.new("navbar.haml")
15
- @col = Tilt.new("col.haml")
13
+ @templates = Meta::Filelib.get_templates
16
14
 
17
- end
18
-
19
- def generate_row(contents)
20
-
21
- length = contents.length
22
-
23
- if length == 1
24
- contents[0][:col_classes] = "col-lg-12 box"
25
- elsif length == 2
26
-
27
- rng = Random.new(SEED)
28
-
29
- r = rng.rand(1..3)
15
+ @layout = Tilt.new("layout.haml") if @templates.include?("layout.haml")
16
+ @navbar = Tilt.new("navbar.haml") if @templates.include?("navbar.haml")
17
+ @index = Tilt.new("index.haml") if @templates.include?("index.haml")
18
+ @page = Tilt.new("page.haml") if @templates.include?("page.haml")
30
19
 
31
- if r == 3
32
- contents[0][:col_classes] = "col-lg-6 box"
33
- contents[1][:col_classes] = "col-lg-6 box"
34
- elsif r == 2
35
- contents[0][:col_classes] = "col-lg-8 box"
36
- contents[1][:col_classes] = "col-lg-4 box"
37
- else
38
- contents[0][:col_classes] = "col-lg-4 box"
39
- contents[1][:col_classes] = "col-lg-8 box"
40
- end
41
-
42
- elsif length == 3
43
- contents[0][:col_classes] = "col-lg-4 box"
44
- contents[1][:col_classes] = "col-lg-4 box"
45
- contents[2][:col_classes] = "col-lg-4 box"
46
- else
47
- contents[0][:col_classes] = "col-lg-3 box"
48
- contents[1][:col_classes] = "col-lg-3 box"
49
- contents[2][:col_classes] = "col-lg-3 box"
50
- contents[3][:col_classes] = "col-lg-3 box"
20
+ if @layout.nil?
21
+ abort("layout.haml template missing, this file must be included".red)
51
22
  end
52
-
53
- return contents
23
+ #TODO: must include index and page as well
54
24
 
55
25
  end
56
26
 
57
- def generate_main(overwrite=false)
58
-
59
- c = @catalog.get_recent(-1)
60
-
61
- length = c.length
62
- remain = length
63
- index = 0
27
+ def generate_index(overwrite=false)
64
28
 
65
- rows = []
29
+ contents = @catalog.get_recent(-1)
66
30
 
67
- rng = Random.new(SEED)
31
+ stats = @catalog.get_statistics
68
32
 
69
- while remain != 0 do
33
+ doc = @index.render( self, :contents => contents )
70
34
 
71
- n = rng.rand(1..remain)
35
+ html = @layout.render( self, :stats => stats ) { doc }
72
36
 
73
- r = generate_row(c[index..index+n-1])
74
-
75
- remain = remain - n
76
- index = index + n
77
-
78
- rows << r
79
-
80
- end
81
-
82
- doc = @col.render( self, :rows => rows )
83
-
84
- html = @layout.render { doc }
85
-
86
- Meta::Filelib.create_file( html, INDEX, @dest, overwrite )
37
+ Meta::Filelib.create_file( html, INDEX, HTMLEXT, @dest, overwrite )
87
38
 
88
39
  end
89
40
 
@@ -91,6 +42,8 @@ module Meta
91
42
 
92
43
  all = Meta::Filelib.get_contents
93
44
 
45
+ stats = @catalog.get_statistics
46
+
94
47
  all.each do |c|
95
48
 
96
49
  if File.zero?(c)
@@ -102,22 +55,15 @@ module Meta
102
55
 
103
56
  content = @catalog.check_content(c)
104
57
 
105
- content[:col_classes] = "col-lg-12 box"
106
58
  content[:summary] = Tilt.new(c).render
107
59
  content[:link] = File.basename( content[:path],
108
60
  File.extname(content[:path]) ) + HTMLEXT
109
61
 
110
- contents = []
111
- contents << content
112
-
113
- rows = []
114
- rows << contents
115
-
116
- r = @col.render( self, :rows => rows )
62
+ p = @page.render( self, :content => content )
117
63
 
118
- html = @layout.render { r }
64
+ html = @layout.render( self, :stats => stats ) { p }
119
65
 
120
- Meta::Filelib.create_file( html, c, @dest, overwrite )
66
+ Meta::Filelib.create_file( html, c, HTMLEXT, @dest, overwrite )
121
67
 
122
68
  end
123
69
 
data/lib/meta/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Meta
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.3"
3
3
  end
4
4
 
data/meta.gemspec CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Meta::VERSION
9
9
  spec.authors = ["stephenhu"]
10
10
  spec.email = ["epynonymous@outlook.com"]
11
- spec.description = %q{meta language compiler for static web pages }
12
- spec.summary = %q{meta compiler (meta)}
11
+ spec.description = %q{opinionated static web page generator}
12
+ spec.summary = %q{opinionated static web page generator}
13
13
  spec.homepage = "http://github.io/stephenhu/meta"
14
14
  spec.license = "MIT"
15
15
 
@@ -19,7 +19,20 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
  spec.bindir = "bin"
21
21
 
22
+ spec.add_dependency "colorize", "~>0.6.0"
23
+ spec.add_dependency "haml", "~>4.0.4"
24
+ spec.add_dependency "highline", "~>1.6.20"
25
+ spec.add_dependency "rack", "~>1.5.2"
26
+ spec.add_dependency "redcarpet", "~>3.0.0"
27
+ spec.add_dependency "sequel", "~>4.5.0"
28
+ spec.add_dependency "sqlite3", "~>1.3.8"
29
+ spec.add_dependency "thin", "~>1.6.1"
30
+ spec.add_dependency "thor", "~>0.18.1"
31
+ spec.add_dependency "tilt", "~>2.0.0"
32
+
22
33
  spec.add_development_dependency "bundler", "~> 1.3"
23
34
  spec.add_development_dependency "rake"
35
+
36
+ spec.add_runtime_dependency "url2thumb"
24
37
  end
25
38
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meta
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,168 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-12-30 00:00:00.000000000 Z
12
+ date: 2014-01-11 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: colorize
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 0.6.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 0.6.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: haml
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 4.0.4
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 4.0.4
46
+ - !ruby/object:Gem::Dependency
47
+ name: highline
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 1.6.20
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.6.20
62
+ - !ruby/object:Gem::Dependency
63
+ name: rack
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 1.5.2
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 1.5.2
78
+ - !ruby/object:Gem::Dependency
79
+ name: redcarpet
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 3.0.0
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 3.0.0
94
+ - !ruby/object:Gem::Dependency
95
+ name: sequel
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 4.5.0
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 4.5.0
110
+ - !ruby/object:Gem::Dependency
111
+ name: sqlite3
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 1.3.8
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 1.3.8
126
+ - !ruby/object:Gem::Dependency
127
+ name: thin
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ~>
132
+ - !ruby/object:Gem::Version
133
+ version: 1.6.1
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ~>
140
+ - !ruby/object:Gem::Version
141
+ version: 1.6.1
142
+ - !ruby/object:Gem::Dependency
143
+ name: thor
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ~>
148
+ - !ruby/object:Gem::Version
149
+ version: 0.18.1
150
+ type: :runtime
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ~>
156
+ - !ruby/object:Gem::Version
157
+ version: 0.18.1
158
+ - !ruby/object:Gem::Dependency
159
+ name: tilt
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ~>
164
+ - !ruby/object:Gem::Version
165
+ version: 2.0.0
166
+ type: :runtime
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ~>
172
+ - !ruby/object:Gem::Version
173
+ version: 2.0.0
14
174
  - !ruby/object:Gem::Dependency
15
175
  name: bundler
16
176
  requirement: !ruby/object:Gem::Requirement
@@ -43,7 +203,23 @@ dependencies:
43
203
  - - ! '>='
44
204
  - !ruby/object:Gem::Version
45
205
  version: '0'
46
- description: ! 'meta language compiler for static web pages '
206
+ - !ruby/object:Gem::Dependency
207
+ name: url2thumb
208
+ requirement: !ruby/object:Gem::Requirement
209
+ none: false
210
+ requirements:
211
+ - - ! '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ type: :runtime
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ description: opinionated static web page generator
47
223
  email:
48
224
  - epynonymous@outlook.com
49
225
  executables:
@@ -97,5 +273,5 @@ rubyforge_project:
97
273
  rubygems_version: 1.8.23
98
274
  signing_key:
99
275
  specification_version: 3
100
- summary: meta compiler (meta)
276
+ summary: opinionated static web page generator
101
277
  test_files: []